/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 *
 * @author Thiago
 */
public class Configuracoes {

    private static Configuracoes Instancia;
    private int DimensaoTerreno;
    private int AlturaTerreno;
    private int NumeroPontos;

    public Configuracoes() {

    }

    public static Configuracoes getInstance() {
        if (Instancia == null) {
            Instancia = new Configuracoes();
        }
        return Instancia;
    }

    public void setConfiguracoes(int DimensaoTerreno, int AlturaTerreno, int NumeroPontos) {
        this.AlturaTerreno = AlturaTerreno;
        this.DimensaoTerreno = DimensaoTerreno;
        this.NumeroPontos = NumeroPontos;
    }

    public void setAlturaTerreno(int AlturaTerreno) {
        this.AlturaTerreno = AlturaTerreno;
    }

    public void setNumeroPontos(int NumeroPontos) {
        this.NumeroPontos = NumeroPontos;
    }

    public void setDimensaoTerreno(int DimensaoTerreno) {
        this.DimensaoTerreno = DimensaoTerreno;
    }

    public int getDimensaoTerreno() {
        return this.DimensaoTerreno;
    }

    public int getAlturaTerreno() {
        return this.AlturaTerreno;
    }

    public int getNumeroPontos() {
        return this.NumeroPontos;
    }

    public void saveConfiguracoes() throws IOException {
        String diretorio = (System.getProperty("user.dir") + "/config/").replace('\\', '/');
        File arq = new File(diretorio + "config.cgmc");  //Arquivo de entrada
        arq.createNewFile();
        salva(arq);
    }

    //Metodo interno que salva os dados no arquivo
    private void salva(File arq) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter(arq)); //br? huehuehuehue Leitor do arquivo de entrada
        //Grava a altura
        bw.write("" + this.AlturaTerreno);
        bw.newLine();

        //Grava a dimensao
        bw.write("" + this.DimensaoTerreno);
        bw.newLine();

        //Grava o numero de pontos
        bw.write("" + this.NumeroPontos);
        bw.newLine();

        //Fecha o arquivo
        bw.close();
    }

    public void openConfiguracoes() throws IOException {
        String diretorio = (System.getProperty("user.dir") + "/config/").replace('\\', '/');
        File arq = new File(diretorio + "config.cgmc");  //Arquivo de entrada
        if (arq.exists()) { //Se o arquivo existe, abre as configurações
            open(arq);
        } else {    //Se nao, carrega um valor padrão
            this.AlturaTerreno = 50;
            this.DimensaoTerreno = 750;
            this.NumeroPontos = 350;
        }
    }

    private void open(File arq) throws FileNotFoundException, IOException {
        BufferedReader br = new BufferedReader(new FileReader(arq));
        this.AlturaTerreno = Integer.parseInt(br.readLine());
        this.DimensaoTerreno = Integer.parseInt(br.readLine());
        this.NumeroPontos = Integer.parseInt(br.readLine());
    }

    public String toString() {
        String r = "";
        r += "Dimensão do terreno: " + this.DimensaoTerreno + "\n";
        r += "Altura do terreno: " + this.AlturaTerreno + "\n";
        r += "Numero de pontos: " + this.NumeroPontos + "\n";
        return r;
    }

}
